package com.ShangGuiGu.sortAlgorithm.交换排序.选择排序;

/**
 * @auther zsj
 * @Date 2022/2/17
 * <p>
 * <p>
 * 选择排序
 *
 * 思想
 * 就是将数组中指定条件的数字放在第一位，依次进行，选择到条件值进行首位交换
 **/
public class ChooseSort {

    public static void main(String[] args) {
        int [] a = {1,3,0,5,9,7,8};
        int[] ints = ChooseSortMethod(a);
        for (int anInt : ints) {
            System.out.println(anInt);
        }
    }

    /**
     * 选择排序
     *
     * @param n
     * @return
     */
    static int[] ChooseSortMethod(int[] n) {
        //每次循环将最小的值换到第一个去
        //第一个值每过一次循环都需要+1
        for (int i = 0; i < n.length - 1; i++) {
            //声明一个变量用来进行接受最小值的下标
            int min = i;
            for (int j = i + 1; j < n.length; j++) {
                //循环完毕之后最终的的数小于你,说明你找到在当前数组中最小的数了，拿到他的下标
                if (n[j] < n[min]) {
                    min = j;
                }
            }
            //如果交换的两个值的下标是不同的，就可以开始交换了
            if (min != i) {
                int temp = 0;
                temp = n[min];
                n[min] = n[i];
                n[i] = temp;
            }

        }
        return n;
    }


}
